package aer.CuadradosDiabolicosEsotericos;

public class CuadradosDiabolicosEsotericos {
   private static boolean b = true;
   private static int lados, constanteMagica, cm2;
   private static int[][] cuadrado;

   public static void main(String[] args) {
   
      while (b) {
         lados = scan();
         if (lados == 0) {
            b = false;
         } 
         else {
            programa();
         }
      }
   
   }

   private static void programa() {
      boolean esEsoterico = true;
      cuadrado = new int[lados][lados];
      int casillas = lados * lados;
      constanteMagica = (int) (lados * ((double) (((double) lados * (double) lados) + 1.0) / 2.0));
      System.err.println(constanteMagica);
      
      for (int i = 0; i < lados; i++) {
         for (int j = 0; j < lados; j++) {
            int casillaActual = scan();
            cuadrado[i][j] = casillaActual;
            if (casillaActual > casillas || casillaActual < 1) {
               esEsoterico = false;
            }
         }
      }
   
      boolean esDiabolico = comprobarDiabolico();
   
      if (esDiabolico) {
         if (esEsoterico) {
            comprobarEsoterico();
         } 
         else {
            System.out.print("DIABOLICO\n");
         }
      } 
      else {
         System.out.print("NO\n");
      }
   
   }

   private static void comprobarEsoterico() {
   
      cm2 = (constanteMagica * 4) / lados;
   
      if ((lados % 2) == 0) {
         par();
      } 
      else {
         impar();
      }
   }

   private static void par() {
   
      int esquina1 = cuadrado[0][0];
      int esquina2 = cuadrado[lados - 1][0];
      int esquina3 = cuadrado[lados - 1][lados - 1];
      int esquina4 = cuadrado[0][lados - 1];
   
      int sumaEsquinas = esquina1 + esquina2 + esquina3 + esquina4;
   
      int mitad1 = (lados / 2) - 1;
      int mitad2 = lados / 2;
   
      int c1 = (cuadrado[0][mitad1] + cuadrado[0][mitad2]);
      int c2 = (cuadrado[mitad1][0] + cuadrado[mitad2][0]);
      int c3 = (cuadrado[lados - 1][mitad1] + cuadrado[lados - 1][mitad2]);
      int c4 = (cuadrado[mitad1][lados - 1] + cuadrado[mitad2][lados - 1]);
   
      int central1 = cuadrado[mitad1][mitad1];
      int central2 = cuadrado[mitad2][mitad2];
      int central3 = cuadrado[mitad1][mitad2];
      int central4 = cuadrado[mitad2][mitad1];
   
      int suma = c1 + c2 + c3 + c4;
      int central = central1 + central2 + central3 + central4;
   
      if ((sumaEsquinas == cm2) && (central == cm2) && (suma == (2 * cm2))) {
         System.out.print("ESOTERICO\n");
      } 
      else {
         System.out.print("DIABOLICO\n");
      }
   
   }

   private static void impar() {
   
      int esquina1 = cuadrado[0][0];
      int esquina2 = cuadrado[lados - 1][0];
      int esquina3 = cuadrado[lados - 1][lados - 1];
      int esquina4 = cuadrado[0][lados - 1];
   
      int sumaEsquinas = esquina1 + esquina2 + esquina3 + esquina4;
   
      int mitad = lados / 2;
   
      int c1 = cuadrado[0][mitad];
      int c2 = cuadrado[mitad][0];
      int c3 = cuadrado[lados - 1][mitad];
      int c4 = cuadrado[mitad][lados - 1];
   
      int central = cuadrado[mitad][mitad];
   
      int suma = c1 + c2 + c3 + c4;
   
      if ((sumaEsquinas == cm2) && ((central * 4) == cm2) && (suma == cm2)) {
         System.out.print("ESOTERICO\n");
      } 
      else {
         System.out.print("DIABOLICO\n");
      }
   
   }

   private static boolean comprobarDiabolico() {
   
      int d1 = 0;
      for (int i = 0; i < lados; i++) {
         d1 += cuadrado[i][i];
      }
   
      int d2 = 0;
      int j = 0;
      for (int i = lados - 1; i >= 0; i--) {
         d2 += cuadrado[j][i];
         j++;
      }
   
      if (d1 != d2) {
         return false;
      } 
      else {
      
         for (int i = 0; i < lados; i++) {
            int acc = 0;
            for (int k = 0; k < lados; k++) {
               acc += cuadrado[i][k];
            
            }
         
            if (acc != d1) {
               return false;
            }
         }
      
         for (int i = 0; i < lados; i++) {
            int acc = 0;
            for (int k = 0; k < lados; k++) {
               acc += cuadrado[k][i];
            
            }
         
            if (acc != d1) {
               return false;
            }
         }
      
         return true;
      } 
   }
   
   private static int scan() {
      try {
         return readInt();
      } 
      catch (Exception e) {      
         return scan();
      }      
   }

   private static char x;
   private static StringBuilder sb = new StringBuilder("");
   private static int readInt() throws Exception {
         
      sb.delete(0, (sb.length()));
      do {
         x = (char) System.in.read();
         if (x >= 48 && x <= 57) {
            sb.append(x);
         }
      } while (x >= 48 && x <= 57);
      
      return Integer.parseInt(sb.toString());
   }

}